Transfer Multiple cPanel Accounts Using the Transfer Tool
⚠️ Transferring accounts between servers can be a complicated process and it requires careful attention to detail on your part. If you have service with HostDime, we can take care of cPanel or Plesk transfers for you. Contact us if you are interested.
cPanel has a useful feature called the Transfer Tool that makes it somewhat easier to migrate cPanel accounts between servers. In order to use this tool, you'll need root (administrative) access to the cPanel server to which you are migrating accounts. You'll need some sort of user access on the remote server as well.
ℹ️ Note
cPanel supports transferring accounts from a variety of popular control panels, including:
- cPanel
- Plesk
- DirectAdmin
- Ensim
For the purposes of this article, we're going to assume you are transferring accounts from another cPanel server with root (administrative) access.
To initiate a transfer of multiple cPanel accounts as root, you will first want to gather some basic information you'll need:
-
Root login details for the destination cPanel server. This is the location where you want the transferred accounts to end up.
-
Root login details for the source cPanel server. This is the location where the accounts are migrating from.
-
A list of all of the accounts you need to transfer (unless you plan on migrate all of them).
-
A list of hosting packages you want to transfer from the source to the destination server (if any).
Once you have this information, you can initiate the migration process using the Transfer Tool in cPanel on the destination server.
-
Log into WHM on your destination server as the "root" user. The login address usually looks something like: https://your.destination.server/whm>
- When you are prompted to log in, enter the username as "root" and whatever the root password is for your destination server.
-
Once you are logged in as root, click into the sidebar search box near the top-left of the screen and then start typing in "transfer tool" and click on the Transfer Tool item in the Transfers section of the WHM sidebar.
-
In the main section of the WHM interface, the Transfer Tool will appear. The first piece of information you need to enter is the Remote Server Address. This can be a Fully Qualified Domain name (FQDN) like servername.domain.com or the IP address of the source server (the location the accounts are being migrated from).
-
Next, enter the source server's SSH port. cPanel automatically fills in the default SSH port of 22, but you should change this if needed to whatever custom SSH port the source server uses.
⚠️Important!
If you are using a firewall on your destination server (the one you are currently logged into WHM on) then you need to make sure outbound connections via TCP and UDP are enabled on the port you specified above or you won't be able to connect to the source server to transfer accounts.
-
You now need to enter your source server login credentials. In the case of this article, you'll need to have the source server root (or wheel) user login details (or SSH key). Select one of the tabs below to learn what you'll need to specify.
Root Password
If the source server allows direct root password logins via SSH, this is the easiest authentication method to set up.
-
Make sure the Root user is selected in the Login section.
-
Now ensure the Password radio button is selected.
-
Carefully type or paste in the password for the source server's root user into the Root Password field.
-
Continue with Step 6 below.
Root SSH Key
If the source server doesn't allow root logins via SSH using the root user password, then you can use an SSH key instead. You will want to use a private SSH key you've installed on the destination server.
ℹ️ It is beyond the scope of this article to explain the concept of SSH keys or how to configure them on the source server. You can see how to create keys and add them to WHM here:
- Make sure the Root user is selected in the Login
section.
- Click on the SSH Public Key radio button if you already have a
private key stored on the destination server. If not, click on
the word here to open a direct link to the WHM SSH root key
creation tool.
- Select the SSH key already installed on this (the destination)
server from the drop-down list.
- Type in the key's password (if there is one) in the SSH Key
Passphrase field. If the key doesn't have a password, leave
this field blank.
- Continue with Step 6 below.
Wheel User Password
Some servers do not permit anyone to log in directly as the root user. For those servers, you log into a regular user account that has special permissions to allow you become the root user. This special user is often called the "wheel" or "su" user. If the server you are trying to migrate accounts from is like this and you use a password to log in as the "wheel" user, follow these directions:
-
Select the User radio button from the Login section.
-
Enter the name of the "wheel" or "su" user.
-
Now ensure the Password radio button is selected.
-
Type in the "wheel" or "su" user's password.
-
You then have select one of two methods to have the wheel user escalate commands to root. It is beyond the scope of this article to explain the difference between the two. When in doubt, try the default su.
-
Now you need to specify the password that you need to enter to escalate to root. Although the name of the field is Root Password, the password may or may not actually be the root password. Check with the owner or server administrator of the source server if you are unsure.
-
Continue with Step 6 below.
Wheel SSH Key
Some servers do not permit anyone to log in directly as the root user. For those servers, you log into a regular user account that has special permissions to allow you become the root user. This special user is often called the "wheel" or "su" user. If the server you are trying to migrate accounts from is like this and you use an SSH key to log in as the "wheel" user, follow these directions:
-
Select the User radio button from the Login section.
-
Enter the name of the "wheel" or "su" user.
-
Select the SSH key already installed on this (the destination) server from the drop-down list.
-
Type in the key's password (if there is one) in the **SSH Key Passphrase **field. If the key doesn't have a password, leave this field blank.
-
You then have select one of two methods to have the wheel user escalate commands to root. It is beyond the scope of this article to explain the difference between the two. When in doubt, try the default su.
-
Now you need to specify the password that you need to enter to escalate to root. Although the name of the field is Root Password, the password may or may not actually be the root password. Check with the owner or server administrator of the source server if you are unsure.
-
Continue with Step 6 below.
-
-
Transferring data from accounts you don't trust could potentially cause some security issues on the destination server. cPanel has the ability to try to stop transferring content that it thinks might be problematic. This feature isn't considered foolproof and isn't enabled by default. You should read over https://go.cpanel.net/insecurerestoreaccount before deciding whether or not to check the box next to Restricted Restore.
-
The Advanced section isn't something that most people will need to make changes to. You should make sure you know what you are doing before making any changes here.
Click here to review the Advanced section features...
⚠️ When in doubt, leave everything in this section as-is.
-
Remote Server Type: You can manually select what type of control panel software that the source server is running if the Transfer Tool is unable to automatically detect the software.
-
Unencrypted: So long as both servers are running cPanel 11.29.126 (which was released in 2011) or later, the Transfer Tool can automatically encrypt data being sent between servers. Unless you are having a serious problem with the transfer that you know is being caused by the automatic encryption, you should leave this unchecked. The data being transferred between servers is very sensitive.
-
Compressed Transfers: By default, the Transfer Tool will use rsync compression while transferring files. This will typically reduce the amount of bandwidth used for the transfer at the expense of more CPU usage.This setting doesn't change the account packaging method used below.
-
Low Priority: If the source server is very busy, starting a transfer might overwhelm it. Enable this item if you want to reduce the stress the process places on the source server. Enabling this will cause the transfer to take longer as the process will be less demanding of source server resources. This doesn't affect the priority of the transfer on the destination server.
-
Use Incremental Backups Speed-up: Leaving this checked will speed up the transfer process if, and only if, the source server is making and keeping local daily incremental backups already. If so, the Transfer Tool will detect this and use the local incremental daily backup as the starting point and only update it to add newly changed files. This can greatly reduce the time it takes for the Transfer Tool to make a backup of account data on the source server. If the source server doesn't keep local daily incremental backups, then a standard full backup of files will be made. cPanel 11.29.126 (from 2011) is required on both servers for this to work.
-
Use custom account packaging modules from “/var/cpanel/lib/Whostmgr/Pkgacct”: cPanel allows you to create custom account transfer packaging tools if you want. With this item checked, if there are valid modules on your destination server located at /var/cpanel/perl/Whostmgr/Transfers/Systems/ the Transfer Tool will use those to package accounts rather than cPanel's own modules. If you interested in creating custom modules, please read cPanel's documentation here.
-
Number of Transfer Threads: Increasing this number will increase the amount of parallel threads the Transfer Tool uses to transfer data from the source server. So long as your server has enough logical cores to handle the threads, the transfer will go faster with more threads. The Transfer Tool will automatically investigate the destination server to figure out how many CPU cores are available and how much free memory the server has and will adjust the number of threads it uses. If you want to override the automatically determined value, change the number in this field.
-
Number of Restore Threads: Once data has been transferred from the source server, the Transfer Tool will use this many parallel threads to restore the data to the local server. The value in this field is automatically calculated by the system based on the number of logical CPU cores and RAM. While it is generally not a good idea to raise the value in this field, you can lower it somewhat if you prefer at the expense of slowing down the restoration process.
-
Transfer Session Timeout: If you want to, you can adjust the number of seconds the Transfer Tool will wait for the transfer to complete before stopping that transfer and moving on to the next one. If the network connection between this server and the source server isn't good, you may want to increase this value. Changing this value only adjusts it for this specific transfer session. If you want permanently adjust this value, you should change it in WHM's Tweak Settings.
-
-
When you are sure you've entered everything correctly above, you can click the Fetch Account List button and your destination server will attempt to make a connection to the source server and pull down some account information. This won't actually start any account transfers.
-
The process of fetching account details may take some time, so be patient. Once it is complete, the screen will change to display some information about the accounts and services on the source server. Here's a sample of what the new screen looks like (click to view it full-size):
⚠️ If the connection fails, please check the details you provided above to ensure they are correct and check your firewall to make sure that inbound and outbound connections are permitted on the remote SSH port you specified.
-
As part of the process of fetching account information from the source server, the Transfer Tool will also attempt to compare the cPanel versions on the source and destination servers (assuming the source is also running cPanel). If a discrepancy is noticed, the Transfer Tool will inform you at the top of the screen in a yellow box.
⚠️ The Transfer Tool has the best chance of success if both servers are on the same major version of cPanel. If that isn't possible, that is fine. The Transfer Tool can handle the mismatch, just be aware that if you're moving an account from a newer cPanel server to an older one, some features and functionality won't be available to the account on the destination server. Also, some features of the Transfer Tool are not supported by old versions of cPanel.
-
At the top of the Transfer Tool screen, there is a Service Configuration section. This section is entirely optional and most people will probably want to skip it. It is used to try to copy some (but not all) key server-level configuration from the source server to the destination server. If you are moving all clients and data from one server to another and you plan to retire the source server once the transfer is complete, then this section may be of interest to you, since it will make matching the two environments easier for you. If you are just moving some accounts and don't want to change the destination server's configuration, skip to the next step.
Click here to review the Service Configuration section features...
-
Click the Show button next to the words Service Configuration if you want to see these service configuration options. Click the button again to Hide these options.
-
Backups: This transfers the cPanel backup configuration from the source to the destination server if you check the box. This does not actually transfer any backups made by or stored on the source server. It just changes the settings on the destination server to match the source server.
-
cPanel and WHM: If you check this item, the cPanel and WHM configuration settings will be migrated from the source server to the destination server. If the two versions of cPanel are not the same, some configuration items may not be migrated.
-
Database Server: When checked, the Transfer Tool will attempt to copy over server-level configuration settings (like those in /etc/my.cnf). If the two database servers are not exactly the same, you'll want to review the configuration after migration to make sure everything is set the way you expect.
-
Easy Apache: This will attempt to copy over the configuration of Easy Apache and Apache itself from the source server.
-
Exim: If you check this item, the Transfer Tool will attempt to copy over the global Exim configuration settings from the source to the destination servers.
-
User Interface Themes: This copies over cPanel theme customizations from the source server to the destination server.
ℹ️More Info
If you'd like to learn more about exactly what is transferred for each option above, please review the following tool documentation (that actually does the work behind the scenes for the Transfer Tool):
-
-
The Packages section of the Transfer Tool shows you any hosting packages set up on the source server as well as what feature lists those packages use. If you don't already have those packages on your destination server, it is a good idea to transfer them. The Transfer Tool will still copy over accounts with the correct settings and restrictions from the source server even if you don't copy over the packages, but it will make changing those accounts more complicated after the migration is complete.
-
At the top of this section, there is a search box that can help you find the specific packages you are looking for (which can be handy if there are lots of them). Start typing what you want to search for in the box and only the packages that match that will be displayed. If you want to clear your search and see all packages again, click on the X to the right of the search box.
-
If you have lots of packages, you may navigate between pages or adjust the number of displayed packages per page using the Page Size drop-down menu on the top right of the Packages section. Changes will apply immediately.
-
To ensure the Transfer Tool copies the packages you want, you'll need to check each of the packages. You can do that individually, or click the checkbox in the grey header just below the search box to select all of the visible packages. If you select a package with a name that already exists, you'll be warned about the conflict.
-
The Accounts section lists all of the hosting accounts on the source server. You'll want to select each account you want to copy over just like you did with packages in the section above. Both sections have similar features, so we'll just focus on what makes the Accounts section different (click to view full-size):
-
When you select an account checkbox, the Transfer Tool will verify if that account's username is unique on the destination. If you already have an account with the same name on the destination, you will be warned and you can choose to overwrite the existing account if you want.
-
For accounts, you not only select which ones to transfer, but you also specify features to use or specific types of data to copy. The Transfer Tool automatically enables copying certain types of data for the accounts you select, but you can add or remove options as you see fit.
- Dedicated IP: This allows you to assign that cPanel account to a dedicated IP address if you want. The source account does not have to be on a dedicated IP address for it to be assigned by you to a dedicated IP address on the destination, but the Transfer Tool will attempt to detect if the source account is on a dedicated IP address and will automatically check this box in that case to ensure the account will remain on a dedicated IP address on the destination server.
- Reseller: This will show you who owns that particular cPanel account. Any account not owned by a reseller will be owned by "root." You cannot change reseller ownership during the transfer itself. If you need to change ownership, you will need to do it after the transfer is complete.
- Copy Home Directory: This copies the home directory files for the account (typically located at /home/CPANELUSERNAME). If you plan to manually migrate that data later, you can uncheck this item and the account will be created, but no home account data will be migrated. It is checked by default.
- **Copy Reseller Privileges: **This will copy over the reseller account permissions and settings from the source server to the destination server. This will be automatically checked if the user is determined to be a reseller. Checking this item does not make a regular cPanel account into a reseller if it isn't one already. You'd need to set that up after the migration is complete.
- Copy Databases: If you want the Transfer Tool to automatically copy over the account's supported databases from the old server to the new one, make sure this box is checked. This is checked by default. If you plan to manually migrate databases later or if the user doesn't want their databases migrated, uncheck this item.
- Copy Bandwidth Data: If this item is checked, cPanel will copy over the bandwidth usage information it keeps track of for that account. It is checked by default. If you'd prefer to give the user a fresh start, uncheck this item and cPanel will set the account's bandwidth usage to zero on the destination server.
- Express Transfer: If you enable this, it will make a number of DNS and redirect changes on the source server once the account has been successfully transferred. It will also suspend the account on the source server after successful migration. These changes will help to ensure visitors go to the new location for the account as soon as possible. You should review the information here if you plan to use this feature.
- Overwrite: If an account with the same cPanel username exists on the destination server already and you check the Overwrite option, the existing account on the destination server will automatically be overwritten by the account you are migrating from the source server. Only use this if you are certain the account on the destination server is the same as the one on the source server.
-
If you are certain you've selected everything properly, you can click Copy to actually start the transfer process.
-
The screen will refresh to show the transfer progress in real-time. The entire transfer process is multi-threaded (unless you reduced the transfer and restore threads to 1 in the Advanced section above), so this screen is divided into 3 areas that update independently. Transfer progress (fetching data from the source server), restore progress (copying the transferred data into the proper locations on this server) and a summary section at the bottom (click to view full-size):
-
You don't have to keep this screen, or even your browser itself open until the transfer is complete. It will continue in the background now until you cancel it or it finishes. You can go back to the Transfer Tool option in WHM to view or abort an existing transfer and you can also use /usr/local/cpanel/bin/view_transfer tool to view the status via the command line if you prefer.
-
The summary will show the success or failure of each item being transferred or restored. It will also show warnings for things you should be aware of that aren't a failure. For example, it will tell you if a feature enabled on the source server is disabled on the destination so it can't be enabled for the transferred account.
✅ Congratulations, you've successfully transferred accounts from one server to another!